#!/usr/bin/env python
# -*- coding: utf-8 -*-

import ventanas_dir.inicio as inicio_py				# Animacion del principio
import ventanas_dir.login as login_py				# Menu principal
import ventanas_dir.menu as menu_py					# Menu ingame
import ventanas_dir.nueva as nueva_py				# Crea una partida nueva
import ventanas_dir.cargar as cargar_py				# Carga una partida
import ventanas_dir.opciones as opciones_py			# Opciones...
import ventanas_dir.debug as debug_py				# Muestra los fps
import ventanas_dir.cursor as cursor_py				# Imprime una imagen en lugar del cursor
import ventanas_dir.ui_topright as ui_topright_py	# Boton para abrir el menu ingame

class ventanas:						# Gestiona todas las ventanas
	def __init__(self, main):	# Hay cuatro capas de ventanas que se imprimen en orden
		self.capa0_py = {}	# Diccionarios donde se buscan las ventanas para crear
		self.capa1_py = {}
		self.capa2_py = {}
		self.capa3_py = {}
		self.capa0_py["inicio"] = inicio_py
		self.capa1_py["login"] = login_py
		self.capa1_py["menu"] = menu_py
		self.capa2_py["nueva"] = nueva_py
		self.capa2_py["cargar"] = cargar_py
		self.capa2_py["opciones"] = opciones_py
		self.capa2_py["ui_topright"] = ui_topright_py
		self.capa3_py["debug"] = debug_py
		self.capa3_py["cursor"] = cursor_py
		self.capa0 = {}		# Diccionarios con las ventanas creadas
		self.capa1 = {}
		self.capa2 = {}
		self.capa3 = {}
		self.capa0["inicio"] = self.capa0_py["inicio"].clase(main)
		self.capa3["cursor"] = self.capa3_py["cursor"].clase(main)
		
	def reiniciar(self,main):
		if main["ventana"]["reinicio"]: # Reiniciar todas las ventanas, no se usa actualmente
			self.__init__(main)
			main["ventana"]["reinicio"] = False
	
	def crear(self,main):		# Crea las ventanas en la cola
		if main["ventana"]["crear"]:
			main["ventana"]["undo2"]["crear"] = main["ventana"]["undo"]["crear"]
			main["ventana"]["undo"]["crear"] = main["ventana"]["crear"]
			nombre = main["ventana"]["crear"]
			for l in nombre:
				try:
					self.capa0[l] = self.capa0_py[l].clase(main)
				except:
					pass
				try:
					self.capa1[l] = self.capa1_py[l].clase(main)
				except:
					pass
				try:
					self.capa2[l] = self.capa2_py[l].clase(main)
				except:
					pass
				try:
					self.capa3[l] = self.capa3_py[l].clase(main)
				except:
					pass
			main["ventana"]["crear"] = []
	
	def borrar(self,main):	# Borra las ventanas en la cola
		if main["ventana"]["borrar"]:
			nombre = main["ventana"]["borrar"]
			if nombre[0] == "todo":
				self.capa0 = {}
				self.capa1 = {}
				self.capa2 = {}
			else:
				main["ventana"]["undo2"]["borrar"] = main["ventana"]["undo"]["borrar"]
				main["ventana"]["undo"]["borrar"] = main["ventana"]["borrar"]
				for l in nombre:
					try:
						self.capa0.pop(l)
					except:
						pass
					try:
						self.capa1.pop(l)
					except:
						pass
					try:
						self.capa2.pop(l)
					except:
						pass
					try:
						self.capa3.pop(l)
					except:
						pass
			nombre = main["ventana"]["borrar"] = []
		
	def seleccionar(self,main):	# Selecciona, una ventana deseleccionada se imprime pero no controla el mouse o teclado
		if main["ventana"]["seleccionar"]:
			main["ventana"]["undo2"]["seleccionar"] = main["ventana"]["undo"]["seleccionar"]
			main["ventana"]["undo"]["seleccionar"] = main["ventana"]["seleccionar"]
			nombre = main["ventana"]["seleccionar"]
			for l in nombre:
				try:
					self.capa0[l].select = True
					self.capa0[l].seleccionar(main)
				except:
					pass
				try:
					self.capa1[l].select = True
					self.capa1[l].seleccionar(main)
				except:
					pass
				try:
					self.capa2[l].select = True
					self.capa2[l].seleccionar(main)
				except:
					pass
				try:
					self.capa3[l].select = True
					self.capa3[l].seleccionar(main)
				except:
					pass
			main["ventana"]["seleccionar"] = []
		
	def deseleccionar(self,main):		# Deselecciona...
		if main["ventana"]["deseleccionar"]:
			main["ventana"]["undo2"]["deseleccionar"] = main["ventana"]["undo"]["deseleccionar"]
			main["ventana"]["undo"]["deseleccionar"] = main["ventana"]["deseleccionar"]
			nombre = main["ventana"]["deseleccionar"]
			for l in nombre:
				try:
					self.capa0[l].select = False
				except:
					pass
				try:
					self.capa1[l].select = False
				except:
					pass
				try:
					self.capa2[l].select = False
				except:
					pass
				try:
					self.capa3[l].select = False
				except:
					pass
			main["ventana"]["deseleccionar"] = []
		
	def pulsar(self,main):				# Deja que cada ventana reciba la el click del mouse o pulsaciones del teclado
		for clave in self.capa0:
			self.capa0[clave].click(main)
		for clave in self.capa1:
			self.capa1[clave].click(main)
		for clave in self.capa2:
			self.capa2[clave].click(main)
		for clave in self.capa3:
			self.capa3[clave].click(main)
		for clave in self.capa0:
			self.capa0[clave].tecla(main)
		for clave in self.capa1:
			self.capa1[clave].tecla(main)
		for clave in self.capa2:
			self.capa2[clave].tecla(main)
		for clave in self.capa3:
			self.capa3[clave].tecla(main)
		
	def proceso(self,main):				# Cada ventana hace cuentas locas...
		for clave in self.capa0:
			self.capa0[clave].proceso(main)
		for clave in self.capa1:
			self.capa1[clave].proceso(main)
		for clave in self.capa2:
			self.capa2[clave].proceso(main)
		for clave in self.capa3:
			self.capa3[clave].proceso(main)
		
	def graficar(self,main):			# Cada ventana se imprime
		for clave in self.capa0:
			self.capa0[clave].graficar(main)
		for clave in self.capa1:
			self.capa1[clave].graficar(main)
		for clave in self.capa2:
			self.capa2[clave].graficar(main)
		for clave in self.capa3:
			self.capa3[clave].graficar(main)
